package com.cskaoyan.bean.vo;

import com.github.pagehelper.PageInfo;
import lombok.Data;

import java.util.List;

/**
 * <h1> 页面返回的基本信息 </h1>
 * @param <T>
 */
@Data
public class BasePageData<T> {
    Integer limit;
    Integer page;
    Integer pages;
    Integer total;
    List<T> list;


    /**
     * <h2> 使用 泛型方法 </h2>
     * @param sourceList
     */
    public static <T> BasePageData ok(List<T> sourceList) {
        //执行完查询之后，可以获得分页结果 → 用哪些数据取决于你的前端需要哪些数据
        //PageInfo中需要传入查询结果
        PageInfo<T> userPageInfo = new PageInfo<>(sourceList);

        // 两个 Bean 之间的转换 使用 BeanUtils ——> 进一步封装为 BeansCopyUtils
        BasePageData<T> basePageData = new BasePageData<>();
        basePageData.setPage(userPageInfo.getPageNum());
        basePageData.setLimit(userPageInfo.getPageSize());
        basePageData.setPages(userPageInfo.getPages());
        basePageData.setTotal((int) userPageInfo.getTotal());
        basePageData.setList(sourceList);
/*
        // TODO 使用 BeanUtils 替换原有代码有问题（GaoJia）
        BasePageData<User> basePageData = BeansCopyUtils.copy(userPageInfo, BasePageData.class);
        basePageData.setList(sourceList);
*/
        return basePageData;

    }
}
